package com.hospital.register.order.mapper;

import java.util.Date;

import org.apache.ibatis.annotations.Param;

import com.hospital.register.model.order.RefundInfo;

/**
 * 访问退款信息
 *
 * @author 刘逸晖
 */
public interface RefundInfoMapper {

    /**
     * 新增退款信息
     *
     * @param 预新增的退款信息
     * @return 新增的记录数
     */
    int insert(RefundInfo refundInfo);

    /**
     * 根据所属订单的 id 、支付类型、退款状态查询退款信息
     *
     * @param orderId      所属订单的 id（必填）
     * @param paymentType  支付类型（微信、支付宝等，必填）
     * @param refundStatus 退款状态，可以为空
     * @return 退款信息
     */
    RefundInfo selectByConditions(@Param("orderId") Long orderId,
            @Param("paymentType") Byte paymentType,
            @Param("refundStatus") Byte refundStatus);

    /**
     * 根据 id 更新退款信息
     * id 、订单 id 、创建时间、删除标记 不可更新
     *
     * @param refundInfo 待更新的退款信息
     * @return 更新的记录数
     */
    int updateById(@Param("refundInfo") RefundInfo refundInfo);

    /**
     * 根据 id 删除退款信息
     * 逻辑删除
     *
     * @param id           待删除的 id
     * @param deletionTime 删除时间
     * @return 删除的记录数
     */
    int deleteById(@Param("id") Long id, @Param("deletionTime") Date deletionTime);

}
